﻿using System.IO;

namespace HaoCoding.DCdb.General.IO
{
    /// <summary>
    /// 优化的文件流 - 优化对Seek&Size方法的调用
    /// 要求是如果文件被打开以进行写入，则它是独占的。
    /// </summary>
    public class OptimizedFileStream : FileStream
    {
        private long length = long.MinValue;

        /// <summary>
        /// 使用FileStream类创建文件流对象
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="mode">文件打开模式</param>
        /// <param name="access">文件访问方式</param>
        /// <param name="share">文件共享方式</param>
        /// <param name="bufferSize">缓冲区大小</param>
        public OptimizedFileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize)
            : base(path, mode, access, share, bufferSize)
        {
        }

        /// <summary>
        /// 使用FileStream类创建文件流对象
        /// </summary>
        /// <param name="fileName">文件路径</param>
        /// <param name="mode">文件打开模式</param>
        /// <param name="access">文件访问方式</param>
        public OptimizedFileStream(string fileName, FileMode mode, FileAccess access)
            : base(fileName, mode, access)
        {
        }

        /// <summary>
        /// 使用FileStream类创建文件流对象
        /// </summary>
        /// <param name="fileName">文件路径</param>
        /// <param name="mode">文件打开模式</param>
        public OptimizedFileStream(string fileName, FileMode mode)
            :base(fileName, mode)
        {
        }

    }
}
